package xpn.platform.modules.template.excel;

import com.google.gson.JsonObject;

import jdk.nashorn.api.scripting.ScriptObjectMirror;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

/**
 * Excel 服务类接口
 *
 * @author duwei
 */
public interface ExcelService {

	/**
	 * 获取指定模板编号templateNo的模板文件的全路径
	 *
	 * @param templateNo
	 *            ：模板编号
	 * @return
	 */
	String getTemplateFileName(String templateNo);

	/**
	 * 根据模板和注入的实体，按照模板指定的规则生成一个填充了数据的excel文件
	 *
	 * @param templateNo
	 *            ：模板编号
	 * @param attachmentLink
	 *            ：附件存储路径
	 * @param fileFullName
	 *            :存储文件全名(包含后后缀名)
	 * @param obj
	 *            :生成文件的对象
	 * @return
	 */
	String mailMerge(String templateNo, String attachmentLink, String fileFullName, JsonObject obj,String fileExcelFullName);

	/**
	 * 根据模板和注入的列表数据源，按照模板指定的规则生成一个填充了列表数据的excel文件
	 *
	 * @param templateNo
	 *            ：模板编号
	 * @param datasource
	 *            ：数据源
	 * @param response
	 * @return
	 */
	void catalog(String templateNo, String datasource, HttpServletResponse response, Long userId, String extractColumnKeys) throws IOException;

	ScriptObjectMirror getExtractColumn(String templateNo);
	
	/**
	 * 将excel 转换为html 打印为pdf
	 * @param templateNo 模板编号
	 * @param attachmentLink 附件存储路径
	 * @param fileFullName 存储文件全名(包含后后缀名)
	 * @param obj 生成文件的对象
	 * @return
	 */
	String createHtmlToPdf(String templateNo, String attachmentLink, String fileFullName, JsonObject obj);
	
	/**
	 * 将excel 转换为html 打印为pdf
	 * @param templateNo 模板编号
	 * @param attachmentLink 附件存储路径
	 * @param fileFullName 存储文件全名(包含后后缀名)
	 * @param obj 生成文件的对象
	 * @return
	 */
	String createHtmlToPdfNew(String templateNo, String attachmentLink, String fileFullName, JsonObject obj);

	String create_print_html(String templateNo, String attachmentLink,String fileFullName, JsonObject obj);
}
